# Math Academy 是如何创建其知识图谱的?
原文:How Math Academy Creates its Knowledge Graph - Justin Skycak
作者:Justin Skycak (@justinskycak) 发表于 2024 年 11 月 13 日
我们完全采用手工方式。
经常收到这样的问题:
「你们如何创建知识图谱?你们如何在适当的粒度水平上规划主题,并设置连接关系(前置知识和包含关系)?」
答案其实很简单,但往往会让那些总是在寻找某种「秘密技巧」来避免困难和乏味工作的人感到失望。
答案:我们完全采用手工方式。
秘诀其实就是做大量的工作来积累数学和教学领域的专业知识,然后再做大量的工作将这些领域专业知识编码到我们的知识图谱结构中。
每当我们规划一门课程时,我们会参考众多其他教科书和在线资源,但最终还是要依靠基于我们自己教学/辅导经验和学科知识的最佳判断。
手工完成这项工作在开始时可能感觉既有挑战性又乏味,但根据我/我们的经验,随着经验的积累会变得越来越容易。
你会逐渐获得一种「直觉」,知道什么是合适的知识块大小,以及在单个知识块内需要处理什么级别的细节。
我们也花了数年时间完善这些知识块,有时意识到某个知识块需要拆分,经过足够多的这种调整后,我们已经能够在第一次尝试时就做得很好。
连接性方面呢?我们约 2500 个主题中的每一个都有3-4个知识点,每个知识点都链接到一个或多个(通常是几个)前置知识。每个前置知识都有一个包含权重,表示前置主题的多少部分平均被包含在解决后续主题问题中——换句话说,当更简单的主题作为组成技能出现在高级主题中时,这个更简单的主题应该获得多少「权重分值」。
是的,这涉及大量的连接关系,是的,我们也是手动设置的。Alex 设置所有前置关系,我设置所有包含权重。这曾经是并且仍然是相当大的工作量,但不是无法承受的工作量。正如 Jason 喜欢说的「正好在人力极限边缘」。
顺便说一下,「人力极限边缘」不是指「你一天能完成的极限」或「你感到疲倦/厌烦的临界点」。
当我们第一次将包含关系编码到知识图谱中时(在已经建立了大量内容基础之后),我每天花大约 8 小时设置包含关系,持续了一个月。不开玩笑,我基本上全职做了一个月的领域专家数据录入工作:
当时有 1500 个主题
x 每个主题 5 个前置关系
x 估算每个关系的包含值需要 2 分钟
= 15000 分钟
= 250 小时
~ 每天 8 小时,持续 30 天
是的,那真的太痛苦了!🤮
但你知道吗?在那个月结束时,任务选择模型开始运行得非常、非常好,因为它有如此准确和全面的数据作为基础。那不是一个愉快的月份,但绝对是 100% 值得的。
就像「从山上捡金子」(Jason 的另一个比喻),有大量的金子散落各处,把它们装到马车里并在山上来回搬运很乏味,但它们极其珍贵,即使不是很有趣,你不去收集就是傻瓜。
换句话说……仅仅因为某件事枯燥乏味,并不意味着它的投资回报率低。有时投资回报率最高的事情恰恰极其枯燥,你只能咬牙坚持去做,因为这是在合理时间内到达目标的可靠路径。
好吧好吧,所以主题和连接关系是手工创建的……那问题和解答呢?
是的,那些也是。手工制作。
我们还手动估算每种问题类型的用时,用来帮助校准每个任务应该给多少经验值。
我们所有的内容、元数据和练习都是内部手工创建的,由数学专家团队历经多年精心制作。
自然的后续问题:为什么手动生成问题而不是用算法生成?
嗯,除了简单的算术之外,数学问题中有如此多的维度和细微差别,算法生成问题需要为每种问题类型定制专门的算法,这比咬牙坚持手动编写足够大的题库要花费更长时间。一旦你创建了某种类型的一道题,克隆它并调整成同类型内新的、不同的题目是相当容易的。
此外,在我们的情况下,每个知识点的「足够大」题库实际上不需要那么大:因为我们的学生学习超高效,在高度细分的课程中进行最小有效剂量的练习,我们实际上不需要每种题型中有太多题目来确保学生不会反复看到相同的问题。每个知识点大约 20 道题就足够了。(一门典型课程包含大约 500-1,000 个知识点,需要大约 10,000-20,000 道题的题库。)
再次强调,这正好在人力极限的边缘。对于单个人来说创建这些内容绝对是太多了,但当你有一个强大的内容团队在强有力的领导(Alex)下努力高效工作时,这是可以实现的。
在我人生的某个阶段,我曾被创建解决一大类问题的通用解决方案的想法所吸引,但我已经意识到真正的优势——至少对我来说,真正的满足感——通常来自:
-
运用你的人类大脑/积累的经验来处理看似棘手问题的微观结构,
-
找到一个你可以撬开的突破口,刚好足够宽让你凭借一些努力挤过去,以及
-
在每个后续问题上一遍又一遍地重复这个过程,偶尔抬头看看,发现尽管开始时看起来多么棘手,你正在朝着目标方向取得实质性进展。
就像电影《火星救援》中的 Matt Damon:「你解决一个问题,然后解决下一个,再下一个。如果你解决了足够多的问题,你就能回家。」
后续问题
Math Academy 上的练习和内容来自哪里?它们都是内部制作的还是从其他材料中提取的?
我们所有的内容和练习都是内部创建的,由 Alex 领导的专家团队历经多年精心制作。我们会进行课程对比以确保内容的全面性,但 Math Academy 上的所有内容都是由专业人士精心制作的。
为什么手动生成问题而不是用算法生成?除了简单的算术之外,数学问题中有如此多的维度和细微差别,算法生成问题需要为每种问题类型定制专门的算法,这比咬牙坚持手动编写足够大的题库要花费更长时间。此外,「足够大」的题库实际上不需要那么大:因为 Math Academy 的学生学习超高效,在高度细分的课程中进行最小有效剂量的练习,我们实际上不需要每种题型中有太多题目来确保学生不会反复看到相同的问题。每个知识点大约 20 道题就足够了。(一门典型课程包含大约 500-1,000 个知识点,需要大约 10,000-20,000 道题的题库。)
此外,我们知识图谱中的所有信息——数万个前置知识链接、解题时间估算,以及包含关系(即,当更简单的主题作为组成技能出现在高级主题中时,这个更简单的主题应该获得多少「权重分值」),也都是由专业人士精心制作的。(Alex 构建前置知识图,他的团队设置题目用时,我构建包含关系图。)
如果这听起来像是荒谬的工作量,那么,嗯……确实如此,这让你了解为什么构建这样的系统如此困难。即使没有所有花哨的技术,所需的内容量也足以成为一家成熟出版公司的基础。对于软件也是如此:即使没有核心内容基础,所需的软件量也足以成为一家成熟科技公司的基础。甚至软件的单个组件——内容管理系统、学生界面、专家系统(即 AI 系统,负责做出所有关于学生需要学习什么的复杂幕后决策)——每个都可以单独成为一家成熟公司的基础。
Jason 经常开玩笑说,当他和 Sandy 开始创办 Math Academy 时,他们完全不知道自己要承担什么样的工作量。到达现在这个程度所投入的工作量绝对是疯狂的。